這篇文章要介紹如何使用 HTML 和 CSS創建一個 3D 旋轉木馬效果,讓圖片在頁面上以立體的方式旋轉,並滑鼠懸停時會暫停旋轉
創建一個容器 carousel
,包含多個圖片項目,每個項目都使用 <div>
元素包裹 <img>
標籤
<div class="carousel">
<div class="carousel-item item1">
<img src="picture1.jpeg" alt="Image 1">
</div>
<div class="carousel-item item2">
<img src="picture2.png" alt="Image 2">
</div>
<div class="carousel-item item3">
<img src="picture3.jpg" alt="Image 3">
</div>
<div class="carousel-item item4">
<img src="picture4.jpg" alt="Image 4">
</div>
<div class="carousel-item item5">
<img src="picture5.jpg" alt="Image 5">
</div>
</div>
使用 Flexbox
將頁面內容居中顯示,確保圖片位於畫面正中間
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
.carousel {
position: relative;
width: 400px;
height: 400px;
transform-style: preserve-3d;
animation: rotate 10s infinite linear;
perspective: 1200px;
}
.carousel:hover {
animation-play-state: paused;
}
.carousel-item {
position: absolute;
width: 300px;
height: 300px;
transform-origin: center center -350px;
}
.carousel-item img {
width: 100%;
height: 100%;
object-fit: cover;
clip-path: circle(50%);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
}
每個 .item
使用 rotateY
屬性,設置每個項目在 Y 軸
上的旋轉角度,讓五個項目在旋轉木馬中均勻分佈
.item1 {
transform: rotateY(0deg);
}
.item2 {
transform: rotateY(72deg);
}
.item3 {
transform: rotateY(144deg);
}
.item4 {
transform: rotateY(216deg);
}
.item5 {
transform: rotateY(288deg);
}
定義一個名為 rotate
的動畫,包含兩個關鍵幀
@keyframes rotate {
from {
transform: rotateY(0deg);
}
to {
transform: rotateY(360deg);
}
}
0deg
開始360deg
,即完成一圈的旋轉